﻿/*
* Copyright (c) 2008 michiyasu wada
* http://www.seyself.com/
* 
* Distributed under The MIT License.
* [http://www.opensource.org/licenses/mit-license.php]
*/


import flash.events.EventDispatcher;
import flash.events.Event;

/**
* 1つの関数が登録されたときに呼び出されます.
* @eventType flash.events.Event.CHANGE
*/
[Event(name="change", type="flash.events.Event")]


class com.seyself.switches.ToggleSwitch extends EventDispatcher
{
    /**
    * 同じボタンを続けて選択したときに動作するかどうかを指定します。falseの時は同じボタンを続けて選択されても動作しません。
    */
    public var equalTarget:Boolean = false;
    
    /**
    * 前回選択されていたボタンを返します。
    */
    public function get previous():Object
    {
        return _previous;
    }
    
    /**
    * 現在選択されているボタンを返します。
    */
    public function get selected():Object
    {
        return _selected;
    }
    
    /**
    * @private
    */
    public function set selected( target:Object ):Void
    {
        if( equalTarget ){
            changeSelect( target );
        } else {
            if( _selected != target ){
                changeSelect( target );
            }
        }
    }
    
    public function ToggleSwitch( equal:Boolean )
    {
        super(this);
        equalTarget = equal==true;
    }
    
    
    //__________________________ p r i v a t e __________________________
    
    private var _selected:Object;
    
    private var _previous:Object;
    
    private function changeSelect( target:Object ):Void
    {
        _previous = _selected;
        _selected = target;
        this.dispatchEvent( new Event( "change" ) );
    }
    
    
}
